home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Revolution - Das Atari CD Magazin 1997
/
Revolution - Das Atari CD Magazin 1.iso
/
software
/
anwendng
/
utility
/
iprn2d
/
liesmich.txt
< prev
next >
Wrap
Text File
|
1996-05-11
|
11KB
|
244 lines
iPRN II (C) Peter Missel 1994-96
"Gähn, schon wieder ein Beschleuniger für die Druckausgabe!"
Jawohl, schon wieder einer. Aber einer mit Statusüberwachung per Interrupt.
Und ein richtig schneller noch dazu. Fast 40fache Beschleunigung
gegenüber TOS kann erreicht werden.
"Und was heißt das, Statusüberwachung?"
Nun, ganz einfach: Zusätzlich zur bei Druckbeschleunigern üblichen
Beschleunigung des Druckens kann iPRN unterscheiden, ob der Drucker
nur beschäftigt oder in einem Fehlerzustand ist (offline, ausgeschaltet,
kein Papier, nicht angeschlossen...). So weiß das System im voraus, ob es
möglich ist, Zeichen an den Drucker zu senden oder nicht.
Dadurch entfällt die lästige Gedenkminute, wenn man drucken will und
der Drucker nicht bereit ist. Die Fehlermeldung erscheint sofort.
iPRN II ist Shareware. Die Demoversionen (Programmdatei IPRN2D.PRG,
Versionsnummer 2-xx statt 2.xx) können frei verbreitet werden. Nur das
vollständige und unveränderte Paket IPRN2xxD.LZH darf weitergegeben werden.
Einschränkungen der Demoversion:
- Die GEMDOS-Beschleunigung wirkt nur beim ersten Ausdruck.
- Die Statusüberwachung funktioniert pro Sitzung nur einmal:
Wenn der Drucker einmal Offline war und wieder Online gesetzt
wird, deaktiviert sich die Statusüberwachung selbst. Dann läuft
alles normal weiter, nur halt wieder mit Gedenkminute bei Druckerfehler.
Die Beschleunigungswirkung bleibt erhalten.
- Kein Kontrollfeldmodul:
- Timeouts nicht konfigurierbar
- Statusüberwachung nicht abschaltbar (schaltet sich sowieso von selber ab)
- keine Deskjet-Weckfunktion
Die registrierten Versionen 1.00 und höher kosten in Deutschland DM 25,-
und US$ 20 im Ausland.
Registrierung
=============
DM 25,- / US$ 20 überweisen an:
Peter Missel, Stadtsparkasse Augsburg, BLZ 72050000, Kto. 1301522.
Als Verwendungszweck "iPRN Vorname Nachname" angeben.
UK: Scheck oder Postal Order über 13 Pounds Sterling, zahlbar an
Denesh Bhabuta, senden an:
CyberSTrider,
203 Parr Lane,
Unsworth,
Bury,
Lancashire,
BL9 8JW
Bitte nicht vergessen, Name und Adresse anzugeben.
Denesh kann auch über E-mail erreicht werden:
dbhabuta@cix.compulink.co.uk
danny@micros.hensa.ac.uk
Zur eindeutigen Identifizierung zusätzlich eine Postkarte schicken an:
Peter Missel, Greiffstraße 11, 86157 Augsburg, Deutschland.
Oder eMail an Peter Missel @ A im Mausnetz.
(Peter_Missel@a.maus.de für Benutzer anderer Netze)
Bitte auch hier die vollständige Postadresse angeben.
Wirkung (Zeichen pro Sekunde)
=============================
BIOS GEMDOS
Rechner ohne mit iPRN ohne mit iPRN II
----------------------------------------------------------------------
ST, 8 MHz, TOS 2.06 1800 13500 1650 64500
ST, 16 MHz, TOS 1.04 3200 >17200
Falcon030, TOS 4.04 3500 bis 36100 * 2930 >115000
Falcon030, TOS 4.04, Bild aus 4500 bis 39370 * >115000
Falcon030/32 MHz, Bild aus 4800 bis 39370 * >115000
TT030 ohne FastRAM, TOS 3.06 5600 bis 34100 *
TT030 mit FastRAM, TOS 3.06 ? bis 41000 * >72000
(Die "größer als"-Werte sind aus Benchmarks, bei denen der Rechner schneller
senden konnte, der Drucker aber nicht schnell genug war.)
* Bei 68030-Rechnern schwanken die BIOS-Meßwerte mit der Lage von
Treiber und Software im CPU-Cache. Im schlechtesten Fall erhält man
etwa 20% weniger Durchsatz, "normal" etwa 5% weniger als die angegebenen
Maximalwerte.
Die GEMDOS-Druckroutine in iPRN II paßt jedoch komplett in den Cache,
so daß die angegebenen Werte meistens ungefähr erreicht werden.
Installation
============
IPRN2.PRG gehört in den AUTO-Ordner, und zwar so weit hinten wie möglich.
MiNT-Anwender müssen es vor MINT.PRG (oder MINTNP.PRG) in den AUTO-Ordner
stecken.
Die Demoversion fordert beim Systemstart die Eingabe "iPRN II<Return>".
Andernfalls installiert sie sich nicht. (Achtung Grafikkartenbesitzer:
Wenn kein Programm installiert ist, das die Textausgaben der Bootphase
auf die Grafikkarte umleitet, muß die Eingabe ohne Sichtkontrolle erfolgen.)
IPRN2.CPX ist das Kontrollfeldmodul und gehört in den Ordner, in dem die
schon vorhandenen Moduln auch schon sind. Normalerweise ist das C:\CPX\.
Es ist allerdings nur in der registrierten Version dabei.
Bedienung
=========
An IPRN2.PRG gibt es nichts zu bedienen. Es wird im AUTO-Ordner automatisch
gestartet und installiert sich. Falls die Installation unmöglich ist, wird
eine Fehlermeldung ausgegeben: "already installed" oder "Printer port
already in use", wenn das Programm bereits installiert ist bzw. wenn bereits
ein anderes Programm den Interrupt der Druckerschnittstelle belegt hat.
Das Kontrollfeld-Modul dient zur Konfiguration des Programms:
- "Offline Timeout" ist die maximale Zeit in Sekunden, die vor dem Absenden
eines Zeichens gewartet wird, bevor der Drucker für abwesend erklärt und
eine Fehlermeldung erzeugt wird.
- "End-of-job delay" ist die Zeit, die nach dem letzten gedruckten Zeichen
verstreichen muß, bevor die Zustandsüberwachung wieder wirksam wird.
- "Printer state watchdog": Zustandsüberwachung des Druckers per Interrupt.
Kann jederzeit an- und ausgeschaltet werden. Ausschalten empfiehlt sich
vor der Benutzung eines Programms, das selbst die Hardware direkt benutzt.
- Nebenbei kann man durch Druck auf "OK" oder "Save" auch eingeschlafene
Deskjets wieder zum Leben erwecken.
Das Kontrollfeldmodul ist nur in den registrierten Versionen enthalten;
in den Demoversionen ist "Offline Timeout" auf 45, "End-of-job delay" auf 2
Sekunden fest eingestellt, und der "Printer state watchdog" deaktiviert sich
nach dem ersten Druckerfehler von selbst.
Die erwünschten Nebenwirkungen von iPRN II sind:
- Die Erzeugung des STROBE-Signals funktioniert unabhängig von der
Geschwindigkeit des Rechners. Auch Besitzer ultraschneller Geräte
jenseits des TT können iPRN II benutzen.
- Auch bei der Hardcopy entfällt die lästige Pause bei abwesendem Drucker.
Der Druckvorgang wird auch hier beschleunigt.
- Beim Reset des Rechners wird statt eines undefinierten Müllzeichens
ein definiertes Müllzeichen gesendet, nämlich ein Nullbyte.
Daß es gesendet wird, ist im TOS so festgenagelt (zumindest bis TOS 1.04)
und läßt sich nicht vermeiden.
Unerwünschte Nebenwirkungen:
- Programme, die die Druckausgabe direkt auf die Hardware machen (anstatt
über GEMDOS oder BIOS), lösen damit pro Byte zwei Interrupts aus, was
_diese_ Druckvorgänge langsamer macht als vorher. (Aber zum Glück nicht
viel.) Das betrifft allerdings auch nur solche Oldies wie Calamus 1.x
oder Signum!Zwei. (Zu letzterem gibt es ein Update, das diesen Mangel
behebt.) Besitzer einer registrierten Version von iPRN II können
vor dem Ausdruck mit solchen Programmen die Druckerstatusüberwachung
über das Kontrollfeld deaktivieren.
- Schließlich berücksichtigen viele Programme nicht, daß die Zeichenausgabe-
funktion des BIOS einen Fehlercode zurückliefert, so daß man den Drucker
nicht während des Drucks offline schalten kann. iPRN II ignoriert deswegen
den Offline-Zustand innerhalb 2 Sekunden nach dem letzten gesendeten
Zeichen (in den registrierten Versionen konfigurierbar).
Spätestens nach dem "großen" Timeout (normalerweise 45 Sekunden,
in der registrierten Version konfigurierbar) gehen dann trotzdem Zeichen
verloren, und der Ausdruck bekommt ein paar Spezialeffekte dazu.
Das passiert allerdings auch mit der normalen Druckfunktion des TOS
und hat mit iPRN II nichts zu tun.
- Auch die Rückgabewerte der GEMDOS-Funktionen werden längst nicht von
allen Programmen beachtet oder gar korrekt behandelt.
Kontraindikationen:
- Nicht anwenden bei hardwaremäßiger Inkompatibilität des Druckerausgangs,
etwa bei GEMulator- oder JANUS-Steckkarten für DOS-PCs oder Mag!C Mac.
==============================================================================
Für die Techniker: iPRN II hängt im BIOS-Trap (mit XBRA-Kennung "iPRN")
und fängt Bconout( 0, ... ) und Bcostat( 0 ) ab. Mit der gleichen Kennung
installiert es sich im GEMDOS-Trap und fängt den Drucker betreffende Aufrufe
von Fcreate, Fopen, Fclose, Fwrite, Fdup und Fforce ab. Zusätzlich installiert
es sich in den Vektoren xconout0, xcostat0, prv_lst, prv_lsto und resvector.
Es aktiviert und benutzt MFP Interrupt I0. Ein Cookie "iPRN" wird eingetragen,
dessen Wert ein Zeiger auf Konfigurationswerte ist; diese wiederum können mit
dem Kontrollfeldmodul verändert werden. (Nur in den registrierten Versionen.)
Verbesserungen im Verhalten der einzelnen Funktionen gegenüber TOS:
Bcostat( 0 ) liefert auch mitten im Druckvorgang einen aussagekräftigen Wert,
weil unterschieden wird, ob der Drucker wegen eines gerade gesendeten
Zeichens busy ist, oder von sich aus die BUSY-Leitung gesetzt hat (etwa weil
ein Fehler aufgetreten ist oder der Drucker offline geschaltet ist).
Das Ergebnis ist wie gewohnt -1 für "ready" und 0 für "not ready", nur daß
ein gewöhnlicher Busy-Zustand auch als "ready" gemeldet wird.
Fopen, Fcreate und Fdup liefern EDRVNR, wenn der Drucker nicht bereit ist.
Fwrite liefert im Gegensatz zur Originalfunktion die tatsächlich gedruckte
Anzahl Bytes. Im Fehlerfall kann das durchaus weniger sein als die übergebene
Menge. Die Originalfunktion liefert immer letztere als Ergebnis, egal, ob sie
die Daten tatsächlich gedruckt hat oder nicht. Korrekterweise muß ein Anwender-
programm also mehrere Fälle unterscheiden:
- Der Rückgabewert ist positiv und gleich der übergebenen Datenmenge.
In diesem Fall ist alles in Ordnung.
- Der Rückgabewert ist positiv, aber kleiner als die zu druckende Anzahl Bytes.
Das Programm muß den Benutzer informieren und ggf. die restlichen Daten
nochmal mittels Fwrite absetzen.
- Der Rückgabewert ist negativ. Es wurde kein Byte gedruckt, und der Wert
ist ein GEMDOS-Fehlercode, üblicherweise EDRVNR. Die Reaktion des
Anwenderprogramms ist die gleiche wie vor, nur daß der ganze Block nochmals
gesendet werden muß.
==============================================================================
Dank geht an:
Thomas Fladerer (mein mutiges Dauer-Versuchskaninchen)
Die Betatester: Franz Blaha, Thomas Fladerer, Robert Federle, Andreas Kohout,
Heinz Lütkebohmert, Michael Nolte.
Die unfreiwilligen Tester: Werner Deinböck, Mathias Donat, Michael Ruge,
Walter Vieser.
Atari für die Hardware-Dokumentation, einige kleine Codefetzen zum
Thema Interrupthandling und Programmstart, und die Tools zum Erzeugen
von Kontrollfeld-Moduln;
Harun Scheutzow für Beistand im Ringen gegen die Zicken des MFP;
Julian F. Reschke fürs geduldige Verwalten der XBRA-Liste.
Besonderer Dank an Thomas Fladerer, Andreas Kohout und Michael Kunert,
die mir ihre Drucker samt Tinte öfters mal geborgt haben.
Peter Missel, im Mai 1996